package jlfm.lastfm.tools.mb;

import java.util.HashMap;
import java.util.Map;

import jlfm.lastfm.apps.ID3MetadataProvider;
import jlfm.lastfm.client.TrackMetadata;
import jlfm.lastfm.tools.id3.ID3Metadata;

public class ID3MetadataProviderWithSimpleCache implements ID3MetadataProvider {

	private ID3MetadataProvider provider;

	private Map<TrackMetadata, ID3Metadata> cache = new HashMap<TrackMetadata, ID3Metadata>();

	public ID3MetadataProviderWithSimpleCache(ID3MetadataProvider p) {
		this.provider = p;
	}

	public ID3Metadata getID3Metadata(TrackMetadata trackMetadata) {
		clearCacheIfNecessary();
		ID3Metadata m = cache.get(trackMetadata);
		if (m == null) {
			m = provider.getID3Metadata(trackMetadata);
			cache.put(trackMetadata, m);
		}
		return m;
	}

	private void clearCacheIfNecessary() {
		if (cache.size() > 10) {
			cache.clear();
		}
	}

}
